package cn.yhp.mybatis.transaction;

import cn.yhp.mybatis.session.TransactionIsolationLevel;

import javax.sql.DataSource;
import java.sql.Connection;

/**
 * 事务工厂【抽象工厂模式，工厂和产品都是各自的实现类】
 * @author yhp
 * @date 2023/12/2
 */
public interface TransactionFactory {

    /**
     * 根据connection创建事务
     * @param connection
     * @return
     */
    Transaction newTransaction(Connection connection);

    /**
     * 根据数据源和事务隔离级别创建事务
     * @param dataSource
     * @param level
     * @param autoCommit
     * @return
     */
    Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level,boolean autoCommit);
}
